Application: Probabilistic Programming
Probabilistic programming is simply programming with probabilities. It can be used in the context of artificial intelligence or machine learning. Or more concretely, to perform random choices and then ask what the probability of certain results is: For example consider a program:
var x: Bool = flipCoin();
var y: Bool = flipCoin();
and then consider asking to infer the probability of x==y. (should be 50%)
In a project, we could investigate and develop some probabilistic language constructs following some paper. For the seminar, a few recent papers on this topic would be the following -- depending on your interest we might find older or more recent other papers as well:
- Reasoning about Probabilistic Programs
- Exact Recursive Probabilistic Programming
- Factor Graph Grammars
- Symbolic Disintegration with a Variety of Base Measures
- The Base Measure Problem and its Solution
Project ideas:
- Implementing a simple DSL with a Probabilistic Generating Functions semantics in Lean
- Implementing a simple DSL with a Straight Through Estimator semantics